﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace WindowsCommonStorage
{
    /// <summary>
    /// 目的の名前を持つファイルが現在のフォルダーに既に存在する場合の処理を指定します。
    /// </summary>
    public enum CommonCreationCollisionOption
    {
        /// <summary>
        /// 任意の名前で新しいファイルまたはフォルダーを作成します。同じ名前のファイルまたはフォルダーが既に存在する場合は、数字を自動的に追加します。
        /// </summary>
        GenerateUniqueName,

        /// <summary>
        /// 任意の名前で新しいファイルまたはフォルダーを作成します。同じ名前のファイルまたはフォルダーが既に存在する場合は置き換えます。
        /// </summary>
        ReplaceExisting,
        
        /// <summary>
        /// 任意の名前で新しいファイルまたはフォルダーを作成します。同じ名前のファイルまたはフォルダーが既に存在する場合は、エラーを返します。
        /// </summary>
        FailIfExists,
        
        /// <summary>
        /// 任意の名前で新しいファイルまたはフォルダーを作成します。同じ名前のファイルまたはフォルダーが既に存在する場合は、既存の項目を返します。
        /// </summary>
        OpenIfExists,
    }

#if NETFX_CORE || WINDOWS_PHONE
    internal static class CommonCreationCollisionOptionExchanger
    {
        internal static Windows.Storage.CreationCollisionOption Exchange(CommonCreationCollisionOption option)
        {
            switch (option)
            {
                case CommonCreationCollisionOption.FailIfExists:
                    return Windows.Storage.CreationCollisionOption.FailIfExists;

                case CommonCreationCollisionOption.GenerateUniqueName:
                    return Windows.Storage.CreationCollisionOption.GenerateUniqueName;

                case CommonCreationCollisionOption.OpenIfExists:
                    return Windows.Storage.CreationCollisionOption.OpenIfExists;

                case CommonCreationCollisionOption.ReplaceExisting:
                    return Windows.Storage.CreationCollisionOption.ReplaceExisting;

                default:
                    return Windows.Storage.CreationCollisionOption.FailIfExists;
            }
        }
    }
#endif
}
